import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

import My from './plugins'

Vue.use(My)
new Vue({
  render: h => h(App),
}).$mount('#app')

// 输⼊ array = [1,5,2,3,2,5,4] 输出 [1, 5, 2, 3, 4] 
function unique (array) {
  // 在这⾥实现 
  // 1. 对数组本身去重
  /*  for (let i = 0; i < array.length; i++) {
     for (let j = i + 1; j < array.length; j++) {
       if (array[i] === array[j]) {
         array.splice(j, 1)
         j--
       }
     }
   } */
  // 2. 数组本身不变，只得到一个去重后的数组即可
  // 2.1
  // return [...new Set(array)]
  // return Array.from(new Set(array))
  // 2.2
  /*  return array.reduce((accu, cur) => {
     if (!accu.includes(cur)) {
       accu.push(cur)
     }
     return accu
   }, []) */
  //  2.3
  const result = array.reduce((accu, cur) => {
    if (!accu[cur]) {
      accu[cur] = cur
    }
    return accu
  }, {})
  return Object.values(result)
}

const array = [1, 5, 2, 3, 2, 5, 4]
unique(array)
// console.log(array)//[1, 5, 2, 3, 2, 5, 4]
// console.log(result)// [1, 5, 2, 3, 4] 
/* function fetchData (callback) {
  setTimeout(() => {
    callback("我是返回的数据")
  }, 5000)
}
实现下⾯的函数 
function promiseFecth () {
  你的代码
  return new Promise((resolve) => {
    fetchData(resolve)
  })
}

promiseFecth().then((res) => {
  console.log(res) // 我是返回的数据 
}) */
const address = [
  {
    id: 1,
    name: '北京市',
    children: [
      {
        id: 11,
        name: '海淀区',
        children: [
          {
            id: 111,
            name: '中关村',
          }
        ]
      }, {
        id: 12,
        name: '朝阳区',
      }
    ],
  }, {
    id: 2, name: '天津市'
  }]
// 请实现该函数 
// 输⼊：getNameById(address, 2)，输出："天津市" 
// 输⼊：getNameById(address, 111)，输出："中关村" 
// 输⼊：getNameById(address, 32)，输出："" （未查找到，输出空字符串） 
function tree2List (tree) {
  return tree.reduce((accu, item) => {
    if (!item.children) {
      accu.push(item)
    } else {
      const subList = tree2List(item.children)
      accu.push(item, ...subList)
    }
    return accu
  }, [])
}
function getNameById (address, id) {
  // 在这⾥实现你的代码 
  // 1. 树形结构数据转数组（列表）
  const list = tree2List(address)
  // 2. 比对数组
  const result = list.find(item => item.id === id)
  return result ? result.name : ''
}

console.log(getNameById(address, 2))
console.log(getNameById(address, 111))
console.log(getNameById(address, 32))